package abcy.cloud.authenticationserver.dto.req;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

@Data
@ApiModel("新增client请求类")
public class SysClientAddReq {

    @ApiModelProperty("客户端clientId")
    private String clientId;

    @ApiModelProperty("客户端所能访问的资源id集合")
    private String resourceIds;

    @ApiModelProperty("客户端client密码")
    private String clientSecret;

    @ApiModelProperty("客户端申请的权限范围,可选值包括read,write,trust;若有多个权限范围用逗号(,)分隔")
    private String scope;

    @ApiModelProperty("客户端支持的grant_type,可选值包括authorization_code,password,refresh_token,implicit,client_credentials, 若支持多个grant_type用逗号(,)分隔")
    private String grantTypes;

    @ApiModelProperty("作用域")
    private List<String> scopesList;

    @ApiModelProperty("类型")
    private List<String> grantTypesList;

    @ApiModelProperty("客户端的重定向URI,可为空")
    private String webServerRedirectUri;

    @ApiModelProperty("客户端所拥有的Spring Security的权限值,可选, 若有多个权限值,用逗号(,)分隔")
    private String authorities;

    @ApiModelProperty("客户端的access_token的有效时间值(单位:秒),可选, 若不设定值则使用默认的有效时间值(60 * 60 * 12, 12小时).")
    private Integer accessTokenValidity;

    @ApiModelProperty("客户端的refresh_token的有效时间值(单位:秒),可选, 若不设定值则使用默认的有效时间值(60 * 60 * 24 * 30, 30天).")
    private Integer refreshTokenValidity;

    @ApiModelProperty("预留的字段,在Oauth的流程中没有实际的使用,可选,但若设置值,必须是JSON格式的数据,如:\n" +
            "{\"country\":\"CN\",\"country_code\":\"086\"}")
    private String additionalInformation;

    @ApiModelProperty("用户是否自动Approval操作, 默认值为 'false', 可选值包括 'true','false', 'read','write'.\n" +
            "该字段只适用于grant_type=\"authorization_code\"的情况,当用户登录成功后,若该值为'true'或支持的scope值,则会跳过用户Approve的页面, 直接授权.")
    private String autoapprove;
}
